<?php
/**
 * Валидация даты и времени в полях форм (пока только дата)
 * 
 * @category Phorm
 * @package Validate
 * @name /Phorm/Validate/DateTime.php
 * @copyright phorm.ru
 * @since 27.04.2010
 * @author vladimir@kachalov.net
 */

class Phorm_Validate_DateTime extends Zend_Validate_Abstract {
		
	const DATE_INVALID = 'dateInvalid';
	 
   /**
	 * Шаблоны сообщений
	 * @var array
	 */
	protected $_messageTemplates = array(
	    self::DATE_INVALID => "'%value%' does not appear to be a valid date and time"
	);
	  
	/**
	 * Непосредственно метод валидации
	 *
	 * @param string $value
	 * @param mixed $context
	 * @return boolean
	 */  
	 
	public function isValid($value, $context = null) {
	    	
	    $value = (string) $value;
	    $this->_setValue($value);
	        
	    $unixts = strtotime($value);
	        
	    if(checkdate(date('m',$unixts),date('d',$unixts),date('Y',$unixts))) {
	        	
			return true;
	        	
	    }
	 
	    $this->_error(self::DATE_INVALID);
	    return false;
	}
}
	